GetAxisByIndex

從軸取得資訊。

Syntax

KsError GetAxisByIndex(
     int Index,
     SlaveStatus* Details,
     int* Resolution,
     DWORD* InputVariables,
     DWORD* OutputVariables
);

參數

Index:軸的索引。索引以 0 為起始;別名將影響此參數。

Details:指示用以接收軸資訊的 SlaveStatus 結構。

Resolution:軸的編碼器解析度。解析度取決於 ESI 資料庫中的 Resolution object。若 Resolution object 被選取,則解析度來自於儲存於物件中的值;若 Resolution object 未選取,則解析度將套用 ESI 資料庫中的 Default Resolution 設定值。

InputVariables:PDO 數據中可用的輸入變數。下表列出 InputVariables 的位元遮罩。

OutputVariables:PDO 數據中可用的輸出變數。下表列出 OutputVariables 的位元遮罩。

InputVariables 的位元遮罩

十六進制位元遮罩 變數
0x1 VAR_STATUS_WORD
0x2 VAR_ACTUAL_POSITION
0x4 VAR_SECOND_ENCODER
0x8 VAR_ACTUAL_VELOCITY
0x10 VAR_ACTUAL_TORQUE
0x20 VAR_TOUCH_PROBE_STATUS
0x40 VAR_MOP_DISPLAY
0x80 VAR_AXIS_INPUTS

OutputVariables 的位元遮罩

十六進制位元遮罩 變數
0x1 VAR_CONTROL_WORD
0x2 VAR_TARGET_POSITION
0x4 VAR_TARGET_VELOCITY
0x8 VAR_TARGET_TORQUE
0x10 VAR_TORQUE_OFFSET
0x20 VAR_TOUCH_PROBE_CONTROL
0x40 VAR_MOP
0x80 VAR_AXIS_OUTPUTS

回傳值

若此函式執行成功,會回傳 errNoError,否則會傳回錯誤碼。如需更多有關錯誤碼的資訊,請參閱 KsError 清單。

備註

取得軸與其編碼器解析度明細。KINGSTAR 子系統啟動後使用。

可用的 EtherCAT 狀態

ecatOP

範例

複製
SlaveStatus slaveStatus = { 0 };
int resolution = 0;
DWORD InputVar = 0, OutputVar = 0;

nRet = GetAxisByIndex(0, &slaveStatus, &resolution, &InputVar, &OutputVar);
if (nRet == errNoError)
{
    // Check the slave information in the SlaveStatus structure.
    RtPrintf("Axis 0 %s: Vendor 0x%x, Product 0x%x, Revision 0x%x, Serial 0x%x\n",
             slaveStatus.Name, slaveStatus.VendorId, slaveStatus.ProductCode,
             slaveStatus.RevisionNumber, slaveStatus.SerialNumber);
    RtPrintf("Address: Auto %d, Fixed %d, Alias %d\n",
             slaveStatus.SlaveId, slaveStatus.PhysAddress, slaveStatus.AliasAddress);
    RtPrintf("PDO: Input len %d, Output len %d, Index offset 0x%x\n",
             slaveStatus.InputLength, slaveStatus.OutputLength, slaveStatus.VariableIndexOffset);
    RtPrintf("State %d, Cycle time %d\n", slaveStatus.State, slaveStatus.CycleTime);

    // Use defined bit mask to check if desired variables are in the PDO data.
    if ((InputVar & VAR_MOP_DISPLAY) == VAR_MOP_DISPLAY) {
        BYTE mopDisplay = 0;
        nRet = ReadAxisMopDisplay(0, &mopDisplay);
        if (mopDisplay != 8 && (OutputVar & VAR_MOP) == VAR_MOP) {
            nRet = WriteAxisMop(0, 8);
        }
    }
}

使用需求

  RT Win32
最低支援版本 4.0 4.0
標頭檔 ksapi.h ksapi.h
程式庫 KsApi_Rtss.lib KsApi.lib

參見

GetIOByIndex

GetSlaveById